bitkeeper revision 1.565 (3fa916a9omQrijJLZBNMaip_G452lQ)
authorsmh22@labyrinth.cl.cam.ac.uk <smh22@labyrinth.cl.cam.ac.uk>
Wed, 5 Nov 2003 15:26:33 +0000 (15:26 +0000)
committersmh22@labyrinth.cl.cam.ac.uk <smh22@labyrinth.cl.cam.ac.uk>
Wed, 5 Nov 2003 15:26:33 +0000 (15:26 +0000)
tweak

xen/drivers/block/xen_vbd.c
xen/include/hypervisor-ifs/vbd.h

index 50e8173d88626e6c6d97977c13facd24bac39449..8ac4f889a7add84c3f16b2e8e280a24e3c9dbc97 100644 (file)
@@ -189,11 +189,13 @@ void vbd_probe_devices(xen_disk_info_t *xdi, struct task_struct *p)
 
     for(i = 0; i < VBD_HTAB_SZ; i++) { 
        for(v = p->vbdtab[i]; v; v = v->next) { 
+
            xdi->disks[xdi->count].device   = v->vdevice; 
            xdi->disks[xdi->count].info     = XD_FLAG_VIRT | XD_TYPE_DISK; 
 
-           /* XXX SMH: and now set XD_FLAG_RO if necessary */
-
+           if(!VBD_CAN_WRITE(v))
+               xdi->disks[xdi->count].info    |= XD_FLAG_RO; 
+               
            xdi->disks[xdi->count].capacity = 0; 
            for(x = v->extents; x; x = x->next) 
                xdi->disks[xdi->count].capacity += x->extent.nr_sectors; 
index fd50333d7d199b3d0b4680e86952279c8c82f16c..c9ac0898c75b946833764c3cfeed8dac59c89222 100644 (file)
@@ -28,7 +28,7 @@ typedef struct _xen_extent {
 #define VBD_MODE_W         0x2
 
 #define VBD_CAN_READ(_v)  ((_v)->mode & VBD_MODE_R)
-#define VBD_CAN_WRITE(_v) ((_v)->mode & VBD_MODE_R)
+#define VBD_CAN_WRITE(_v) ((_v)->mode & VBD_MODE_W)
 
   
 typedef struct _vbd_create {